package cn.tedu.jsd2210.csmall.product.schedule;

import cn.tedu.jsd2210.csmall.product.repo.IAlbumRedisRepository;
import cn.tedu.jsd2210.csmall.product.service.IAlbumService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

/**
 * 处理缓存的计划任务类
 */
@Slf4j
@Component
public class CacheSchedule {
    // fixedRate:执行频率 毫秒为单位
    // fixedDelay：执行间隔，以上一次执行的结束时间开始计算下一次的执行时间，以毫秒为单位
    // cron：取值是一个字符串，此字符串是一个表达式，包含6~7个值，各值之间使用空格进行分隔
    // -- 在cron表达式中，各值表示的意义依次是：秒 分 时 日 月 星期 [年]
    // -- 各值均可使用通配符表示
    // -- 使用星号（*）表示任意值
    // -- 使用问号（?）表示不关心此值，此通配符仅能用于“日”和“星期”的值
    // -- 例如：56 34 12 13 2 ? 2023，表示2023年3月13日12:34:56会执行此任务，无视当天星期几
    // -- 在cron表达式中的各值还可以使用 x/y 格式的值，例如在“分”的位置配置 1/5，表示分钟值为1时执行，且每间隔5分钟执行1次

    @Autowired
    private IAlbumService albumService;

    public CacheSchedule() {
        log.debug("创建处理缓存的计划任务类对象：CacheSchedule");
    }

    @Scheduled(fixedRate = 3*60*1000)
    public void a(){
        log.debug("执行了计划任务...");

        albumService.rebuildCache();
    }
}
